#pragma once

#include "Element.h"
#include "mPoint.h"
#include "Point.h"
#include "FirstBoundary.h"
#include "SecondBoundary.h"
#include <vector>
#include <cmath>

using namespace std;

class Mesh
{
private:
	int sBondIterator;
	public:

	vector<mPoint> vertexList;
	vector<Element> elementList;
	vector<FirstBoundary> fBoundaryList;
	vector<SecondBoundary> sBoundaryList;
	vector<Point> constrPointList;
	int kFactor;
	double scale;
	int yUp;
	int yDown;
	int xLeft;
	int xRight;

	Mesh(void);
	Mesh(vector<Point> pList, double minElemSize);

	void addFirstBoundary(FirstBoundary val);
	void addSecondBoundary(SecondBoundary val);
	void setKFactor(int val);
	void setScale(double val);
	void triangulateShape(vector<Point> pList, double minElemSize);

	~Mesh(void);
};